#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/3/27 17:13
# @Author : 闫峰
# @File    : montior_no_sales.py
from apps.zhcxkj_center_listing_comprehensive.prod.utils.t_jdwalmart_listing import TJdwalmartListing
from utils.noticeUtils.dingtalkControl import DingTalkSendMsg
from utils.otherutils.MyThreadPool import MyThreadPool
from utils.times_tool.time_control import count_time
from apps.zhcxkj_monitor.prod.utils.monitor_jdwalmart_listing_nosales import MonitorJdwalmartListingNosales
from apps.zhcxkj_center_product.prod.utils.rb_product_no_sale import RbProductNoSale
from threading import Lock
data_list=[]
class MonitorNoSales:

    @staticmethod
    def test_main():
        """
        主测试函数，用于执行MonitorNoSales类中的数据处理和发送任务。
        该函数不接受参数，也不返回任何值。
        """

        # 删除旧数据
        MonitorJdwalmartListingNosales.delete_data()

        # 获取通用的无销售SKU列表
        common_nosalesku_list = RbProductNoSale.get_no_sale_sku_list(61,"")
        def split_list(input_list, chunk_size=5):
            return [input_list[i:i + chunk_size] for i in range(0, len(input_list), chunk_size)]


        split_large_list = split_list(list(set(common_nosalesku_list)))
        MyThreadPool(8).multithreaded(MonitorNoSales().handler, list(split_large_list))
        # MyThreadPool(19).multithreaded(MonitorNoSales().handler, common_nosalesku_list)
        text = MonitorJdwalmartListingNosales.get_text()
        # 发送钉钉消息
        DingTalkSendMsg(DingTalk='all_platform_monitor').send_success(text=text,
                                                                      title='jdwalmart平台禁售产品数监控服务',
                                                                      phone_list=[18118758151, 15767667648,
                                                                                  13841609957])

    @staticmethod
    def handler(common_nosalesku_list):
        """
        监控并处理Shopee平台上的无销售产品数据。

        :param source_id: 数据源ID，用于标识不同的数据来源。
        :param country_shorthand: 国家缩写，用于指定具体的Shopee市场。
        :param common_nosalesku_list: 公共的无销售SKU列表，用于筛选特定的无销售产品。
        :return: 无返回值，主要进行数据库操作，将无销售产品信息插入到监控数据库中。
        """

        data_list = TJdwalmartListing.get_listing_list_by_sku(common_nosalesku_list)
        if not data_list:
            return
        insert_data = list(map(lambda x: (x[0], x[1], x[2], x[3], x[4]), data_list))

        MonitorJdwalmartListingNosales.batch_insert_data(insert_data)




if __name__ == '__main__':
    # data = ((13530, 'MY'),)
    MonitorNoSales.test_main()
    # MonitorNoSales.func()
